package com.tomehay.termprojectmanage_server.service;

import java.io.IOException;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tomehay.termprojectmanage_server.pojo.Model.PersonalTask;
import com.tomehay.termprojectmanage_server.pojo.VO.PersonalTaskVO;
import com.tomehay.termprojectmanage_server.pojo.VO.ResultVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * (PersonalTask)表服务接口
 *
 * @author makejava
 * @since 2023-06-24 13:40:22
 */
public interface PersonalTaskService extends IService<PersonalTask> {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    PersonalTask selectById(Integer id);

    /**
     * 分页查询
     *
     * @param start 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<PersonalTask> selectPage(int start, int limit);

    /**
     * 查询全部
     *
     * @return 对象列表
     */
    List<PersonalTask> selectAll();

    /**
     * 通过实体作为筛选条件查询
     *
     * @param personalTask 实例对象
     * @return 对象列表
     */
    List<PersonalTask> selectList(PersonalTask personalTask);

    /**
     * 新增数据
     *
     * @param personalTask 实例对象
     * @return 影响行数
     */
    int insert(PersonalTask personalTask);

	/**
     * 批量新增
     *
     * @param personalTasks 实例对象的集合
     * @return 影响行数
     */
	int batchInsert(List<PersonalTask> personalTasks);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    /**
     * 查询总数据数
     *
     * @return 数据总数
     */
    int count();

    PersonalTask update(PersonalTask personalTask);

    List<PersonalTask> list(Integer id);

    PersonalTask getDetailById(Integer id);

    int savepersonalTask(PersonalTask personalTask);

    List<PersonalTask> selectAllPersonalTask(Integer pid, Integer id, Integer gmid);

    ResultVO<Void> UpLoadCode(MultipartFile multipartFile, int id) throws IOException;

    ResultVO<Void> UpLoadDoc(MultipartFile multipartFile, int id) throws IOException;

    ResultVO<Void> DeleteCode(int id, String path);

    ResultVO<Void> DeleteDoc(int id, String path);

    ResultVO<Void> FinishGroupTask(int id);

    ResultVO<List<PersonalTaskVO>> GetByGroupTaskID(int id);
}
